# vytvaranie premennych
a <- 12
b = 1
# vypis premennej 1. sposob
a
# vypis premennej 2. sposob
print(b)
Podmienky (Conditions)¶
Najčastejšie sa používajúce vektorové operácie:
Podmienky | Popis |
---|---|
<- alebo = |
priradenie |
a == b |
rovná sa |
a != b |
nerovná sa |
a < b |
je menšie ako |
a > b |
je vačsie ako |
a <= b |
je menšie rovné ako |
a => b |
je väčšie rovné ako |
is.na() |
testuje, či ide o chýbajúcu hodnotu NA (Not Available) |
is.nan() |
testuje, či ide o NaN (Not A Number) t. j. o nedefinované (matematické) výsledky operácií |
is.null() |
testuje, či objekt je NULL |
Matematické operácie | Popis |
---|---|
a+b, a-b, a*b, a/b |
základné matematické operácie |
sum(x) |
Suma |
min(x) |
Najmenšia hodnota |
max(x) |
Najväčšia hodnota |
mean(x) |
Priemer |
median(x) |
Stredná hodnota |
log(x) |
Prirodzený logaritmus |
exp(x) |
Exponencialna funkcia |
sqrt(x) |
Druhá odmocnina |
abs(x) |
Absolútna hodnota |
ceiling(x) |
Zaokrúhli nahor na celé čislo |
floor(x)/trunc(x) |
Zaokrúhli nadol na celé čislo |
round(x,digits = 5) |
Zaokrúhli na 5 desatiných miest |
cislo %% 2 == 0 |
Zvyšok po delení dvoma je nula, t.j. čislo je deliteľné dvoma |
rnorm() |
Náhodné normálne rozdelenie |
runif() |
Náhodné rovnomerné rozdelenie |
Vektory (Vector)¶
V prvej časti sa pozrieme akými spôsobmi sa dajú vektory vytvoriť. V druhej časti budeme pristupovať k jednotlivým elementom vektora podľa pozície a hodnoty, ktorú chceme vrátiť.
# vytvorenie ciselnych vektorov
v = c(5.5, 6.2, 7.8)
v = 10:30
v = seq(1,5, by=0.2)
v = rep(1:4, times=3)
v = rep(1:4, each=3)
print(v)
# vytvorenie vektora logickych hodnot
v = c(TRUE, FALSE, FALSE)
print(v)
# vytvorenie vektora znakov
v = c("ab", "cd", "ef")
print(v)
vector = c(1, 6, 9, 12, 58, 13, 11, 89, 9)
# 1. PODLA POZICIE
print(vector[1]) # vrati prvy znak vektora
print(vector[-1]) # vrati vsetky znaky vektora okrem preveho
print(vector[1:4]) # vrati prve 4 znaky
print(vector[-(1:4)]) # vrati vsetky znaky okrem prevých styroch
print(vector[vector>6]) # vrati vacsie ako 6
# 2. PODLA HODNOTY
print(vector[vector == 9]) # vrati hodnoty rovné 9
print(vector[vector < 12]) # vrati hodnoty menšie ako 12
Zmena dátového typu (Data Type) - explicitná korekcia¶
Poznáme niekoľko základných dátových typov a to: znaky (character
), logické hodnoty (logical
), numerické hodnoty (numeric
), celočíselné hodnoty (integer
), komplexné čísla (complex
) a špeciálny dátový typ faktor (factor
). Faktor sa používa na reprezentáciu kategorických dát. Niektoré algoritmy si vyžadujú zmenu dátového typu, preto si spôsob ako "pretypovať" nápriklad vektor hodnôt.
# uprava typu vektora - explicitna korekcia
z = 0:9
# zmena datoveho typu na numericky
n = as.numeric(z)
print(n)
class(n)
# zmena datoveho typu na logický - TRUE, FALSE
l = as.logical(z)
print(l)
class(l)
# zmena datoveho typu na vektor znakov
ch = as.character(z)
print(ch)
class(ch)
# zmena datoveho typu na faktory
f = as.factor(z)
print(f)
class(f)
Matice (Matrix)¶
Matice sú objekty typu vector s definovanými dimenziami. Existuje niekoľko spoôsobov ako vytvoriť maticu:
Všimnte si ako sú matice konštruované!
# kedze matice su vlastne vektory s dimenziami, vieme ich vytvorit priamo s vektora a to:
# 1. pridanim dim()
L = c(10,3,5,1)
dim(L) = c(2,2)
print(L)
L
# 2. pridanim stlpca
P = c(10,3,5,1)
R = c(1,6,2,9)
print(cbind(P,R)) # taketo pridavanie stlpcov a riadkov sa vyuziva aj pri data.frame
# 2. pridanim riadka
print(rbind(P,R)) # taketo pridavanie stlpcov a riadkov sa vyuziva aj pri data.frame
# R vsak ponuka vytvorenie matic jednoduchsie a to pomocou prikazu matrix
M = matrix(1:4, nrow=2, ncol=2)
print(M)
N = matrix(c(10,3,5,1), 2, 2)
print(N)
# pridanie nazvu pre tiadky a stlpce
dimnames(M) = list(c("a", "b"), c("c", "d"))
print(M)
# pristup k podmnozinam
print(M[2, ]) # vyber druheho riadku
print(M[ , 1]) # vyber prveho stlpca
print(M[2, 1]) # vyber elementu v druhom riadku prvom stlpci
# informacie o matici
nrow(M)
ncol(M)
dim(M)
# zakladne operacie
M * N # nasobenie po elementoch
M %*% N # skutocne nasobenie matic
solve(M,N) # vrati x: m * x = n
Zoznamy (List)¶
Zoznam je opäť špecialný objekt typu vector
, avšak môže obsahovať rôzne dátové typy a objekty (napríklad znaky, čisla, logické hodnoty ale aj vnorený zoznam či vektor)
zoznam = list(a1 = 1:3, a2 = 0.3, a3 = "d", a4=list(c(1,3),TRUE))
print(zoznam)
# 1. vypise prvky elementu !!!! typ integer !!!!
z1 = zoznam[[1]] # na prvej pozicii
print(z1)
class(z1)
z2 = zoznam$a1 # z nazvom elementu a2
print(z2)
class(z2)
# 2. vytvori NOVY ZOZNAM !!!! typ list !!!!, ktory bude obsahovat:
z3 = zoznam["a2"] # prvky elementu z nazvom a2
print(z3)
class(z3)
z4 = zoznam[2] # prvky elementu na druhej pozicii
print(z4)
class(z4)
z5 = zoznam[c(1,3)] # prvky prveho a tretieho elementu povodneho zoznamu
print(z5)
class(z5)
Dátové rámce (Data Frame)¶
Dátové rámce sa využívajú na ukladanie tabuľkových dát. Je to špeciálny typ zoznamu (list), pričom každý element má rovnakú dĺžku. Jeden element tvorí jeden stĺpec, pričom každý stĺpec môže nadobúdať iný dátový typ. Príkazom data.matrix() môžete konvertovať data na maticu.
# vytvorenie tabulky - data frames
df = data.frame(a1= 1:10, a2 = c(0.2, 0.7, 1.5, 2.2,3.4, 1, 2, 3, 6,9))
#View(df) - podporovane iba v R-studio
head(df)
# informacie o data frame = rovnako ako pri maticiach
nrow(df)
ncol(df)
dim(df)
V nasledujúcom skripte si ukážeme základné operácie s dátovými rámcami (prístup k podmnožinám, podmienený výber riadkov, nahrádzanie jednotlivých hodnôt, usporiadanie, pridávanie nových slĺpcov). Ďalej budeme k dátovým rámcom pristupovať cez knižnicu dplyr
. Tejto knižnici bude venované cvičenie 3
.
df = data.frame(x=1:5,y=rnorm(5),z=sample(11:15))
df
# pristup ku podmnozinam
df[ , 2]
df[,"x"]
df[2, ]
df[2, 2]
df[1:2,"z"]
# podmienený výber riadkov
df[(df$x <= 3 | df$z > 15), ]
# podmienený výber riadkov
df[which(df$x > 3), ] # alebo df[df$x > 3, ]
# nahradenie hodnôt
df$y[c(1,3)] = NA
df
# usporiadanie
df[sort(df$x, decreasing = T), ]
# usporiadanie
sort(df$x)
sort(df$x,decreasing=TRUE)
sort(df$y)
sort(df$y,na.last=TRUE)
# pridanie noveho stlpca
df$new = c(1,5,9,6,10)
df
# pridanie noveho stlpca
df$new2 = df$x^2
df
# pridanie noveho stlpca
df$new3 = ifelse(df$x>3, TRUE, FALSE)
df
Podmienka if-else¶
Testovacia podmianka:
x = -2
if (x > 0) {
print("Kladne cislo")
} else if (x < 0) {
print("Zaporne cislo")
} else
print("Nula")
Cyklus for¶
Cyklus s fixným počtom opkovaní:
# FOR
f = seq(1,100, by = 2)
a = NULL
for (i in 1:50)
{
a[i] = f[i]^2
}
print(a)
# for, next
for(i in 40:60)
{
if(i == 50)
{
next
}
print(i)
}
Cyklus while¶
Cyklus, ktorý sa opakuje, pokiaľ je platná podmienka:
count = 0
while(count < 10)
{
print(count)
count = count + 1
}
Break, repeat, next, return¶
Príkaz | Popis |
---|---|
repeat |
spúšťa nekonečný cyklus, ako while, bez podmienky |
break |
ukončuje beh nekonečného cyklu |
next |
preskočí iteráciu v cykle |
return |
výstup funkcie |
sum = 1
repeat
{
sum = sum + 2
print(sum)
if (sum > 11)
break
}
Funkcie¶
f1 = function(x) {
x^2
}
f1(2) #volanie funkcie
f2 = function(x,y){
x + y
# x - y
# x * y
# x / y
}
f2(2,4)
Úlohy¶
Úloha 1.1¶
Vytvorte funkciu s názvom funkcia
, ktorá bude mať vstupný parameter n
. Použitím cyklu prejdite všetky čísla od 1
po n
a pomocou vetvenia urobte nasledovne operácie:
- Ak sa jedná o číslo deliteľné 2 jeho druhú mocninu,
- Ak sa jedná o číslo deliteľné 3 a zároveň 5 jeho tretiu mocninu.
- Ak číslo nepatrí ani do jednej skupiny, tak ho iba vypíšte.
Na záver spustite funkciu s názvom funkcia.